<?PHP
////////////////////////////////////////////////////////////////////////////
//                                                                        //
// NOTICE OF COPYRIGHT                                                    //
//                                                                        //
// Dean`s Office for Moodle                                               //
// Электронный деканат                                                    //
// <http://deansoffice.ru/>                                               //
//                                                                        //
// Copyright (C) 2008-2999  Alex Djachenko (Алексей Дьяченко)             //
// alex-pub@my-site.ru                                                    //
// Copyright (C) 2008-2999  Evgenij Cigancov (Евгений Цыганцов)           //
//                                                                        //
// This program is free software: you can redistribute it and/or modify   //
// it under the terms of the GNU General Public License as published by   //
// the Free Software Foundation, either version 3 of the Licensen.        //
//                                                                        //
// This program is distributed in the hope that it will be useful,        //
// but WITHOUT ANY WARRANTY; without even the implied warranty of         //
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the          //
// GNU General Public License for more details.                           //
//                                                                        //
// You should have received a copy of the GNU General Public License      //
// along with this program.  If not, see <http://www.gnu.org/licenses/>.  //
//                                                                        //
////////////////////////////////////////////////////////////////////////////
/**
 * Скрипт для вывода на страницу гостевой книги.
 *
 * @package    gbook
 * @category   interface
 * @copyright  2013 Nikolay Konovalov
 * @license    http://www.gnu.org/copyleft/gpl.html GNU GPL v3 or later
 */

// Подключаем библиотеки
require_once(dirname(realpath(__FILE__))."/../../lib.php");
require_once($CFG->dirroot . '/blocks/dof/im/gbook/lib.php');
require_once($CFG->dirroot . '/blocks/dof/im/gbook/lib/gbook_generate_html.php');

$PAGE->set_context(context_system::instance());
require_login();

/*
 * Проверяем, если данные были посланы с формы (кнопки comment/edit/delete/save changes/...)
 */

$action = optional_param('action', '', PARAM_TEXT);
$hidden = array('submitbutton', 'commentmsg',
                'editmsg', 'deletemsg',
                'editcmt', 'deletecmt');
foreach ($hidden as $value)
{ // find which action was done
    if ( $hiddenaction = optional_param($value, '', PARAM_TEXT) )
    {
        $hiddenaction = $value;
        break;
    }
}
$msgid = optional_param('msgid', '', PARAM_INT);
$cmtid = optional_param('cmtid', '', PARAM_INT);

/*
 * Если кнопки были нажаты, то совершаем требуемое действие, иначе просто выводим
 * гостевую книгу. При этом для каждого действия генерируется своя страница: для комментирования --
 * оригинальное сообщение и комментарии к нему, для редактирования -- оригинальное сообщение/комментарий, и т.д.
 * Если была нажата кнопка submit с формы отправки (изменений/комментирования), то выполняются действия в бд, а затем
 * сразу отрисовывается гостевая книга.
 */

$DOF->modlib('nvg')->print_header(NVG_MODE_PORTAL);

$htmlout = new gbook_generate_html();
if ( $action )
{ // выполнено действие, обращаемся к бд, а затем отрисовываем гостевую книгу
    $text = required_param('messagearea', PARAM_NOTAGS);
    $author = required_param('author', PARAM_NOTAGS);
    switch ($action)
    {
        case 'comment':
            $DOF->storage('gbcomments')->add_commentary($msgid, $text, $author);
            break;

        case 'editmsg':
            $DOF->storage('gbmessages')->update_message($msgid, $text, $author);
            break;

        case 'editcmt':
            $DOF->storage('gbcomments')->update_commentary($msgid, $cmtid, $text, $author);
            break;

        case 'submitbutton':
            $DOF->storage('gbmessages')->add_message($text, $author);
            break;

        default:
            break;
    }
    echo $htmlout->show_guestbook_messages();
}else
{ // действий нет, нажаты только кнопки в первый раз или ничего не было нажато совсем
    switch ($hiddenaction)
    {
        case 'commentmsg':
            echo $htmlout->show_source_message_with_comments($msgid);
            echo $htmlout->show_submit_form($msgid, 0, 'comment');
            break;

        case 'editmsg':
            echo $htmlout->show_message_by_id($msgid, false);
            echo $htmlout->show_submit_form($msgid, 0, 'editmsg');
            break;

        case 'deletemsg':
            $DOF->storage('gbmessages')->delete_message($msgid);
            unset($_POST['msgid']);
            echo $htmlout->show_guestbook_messages();
            break;

        case 'editcmt':
            echo $htmlout->show_commentary_by_id($msgid, $cmtid, false);
            echo $htmlout->show_submit_form($msgid, $cmtid, 'editcmt');
            break;

        case 'deletecmt':
            $DOF->storage('gbcomments')->delete_commentary($cmtid);
            unset($_POST['msgid']);
            unset($_POST['cmtid']);
            echo $htmlout->show_guestbook_messages();
            break;

        default:
            echo $htmlout->show_guestbook_messages();
            break;
    }
}

$DOF->modlib('nvg')->print_footer(NVG_MODE_PORTAL);
?>